package cn.remexs.apijson.upms;

import apijson.Log;
import apijson.framework.APIJSONApplication;
import apijson.framework.APIJSONCreator;
import apijson.orm.SQLConfig;
import cn.remexs.apijson.upms.config.ApiJsonConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@SpringBootApplication
public class ApiJsonUpmsApplication {
  static {
    APIJSONApplication.DEFAULT_APIJSON_CREATOR =
      new APIJSONCreator() {
        @Override
        public SQLConfig createSQLConfig() {
          return new ApiJsonConfig();
        }
      };
  }

  public static void main(String[] args) throws Exception {
    Log.DEBUG = true;
    SpringApplication.run(ApiJsonUpmsApplication.class, args);
    APIJSONApplication.init(false); // 4.4.0 以上需要这句来保证以上 static 代码块中给 DEFAULT_APIJSON_CREATOR 赋值会生效
  }

  // 支持 APIAuto 中 JavaScript 代码跨域请求 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  @Bean
  public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
      @Override
      public void addCorsMappings(CorsRegistry registry) {
        registry
          .addMapping("/**")
          .allowedOrigins("*")
          .allowedMethods("*")
          .allowCredentials(true)
          .maxAge(3600);
      }
    };
  }
}
